bitkeeper revision 1.1389.1.14 (427343557mBKHXIKNWB3vC3vSFMQ7g)
authorkaf24@firebug.cl.cam.ac.uk <kaf24@firebug.cl.cam.ac.uk>
Sat, 30 Apr 2005 08:35:33 +0000 (08:35 +0000)
committerkaf24@firebug.cl.cam.ac.uk <kaf24@firebug.cl.cam.ac.uk>
Sat, 30 Apr 2005 08:35:33 +0000 (08:35 +0000)
Fix xc_ptrace for paravirtualized guests.
Signed-off-by: Kip Macy <kmacy@fsmware.com>
tools/libxc/xc_ptrace.c

index 4c79d497a74a87ee2ab399dc47b38c62c618872e..df05b59d4e4ab31550143d12c5e4d58569834126 100644 (file)
@@ -181,7 +181,8 @@ map_domain_va(unsigned long domid, int cpu, void * guest_va, int perm)
     } 
     if ((pde = cr3_virt[cpu][vtopdi(va)]) == 0) /* logical address */
        goto error_out;
-    pde = page_array[pde >> PAGE_SHIFT] << PAGE_SHIFT;
+    if (ctxt[cpu].flags & VGCF_VMX_GUEST)
+        pde = page_array[pde >> PAGE_SHIFT] << PAGE_SHIFT;
     if (pde != pde_phys[cpu]) 
     {
        pde_phys[cpu] = pde;
@@ -194,7 +195,8 @@ map_domain_va(unsigned long domid, int cpu, void * guest_va, int perm)
     }
     if ((page = pde_virt[cpu][vtopti(va)]) == 0) /* logical address */
        goto error_out;
-    page = page_array[page >> PAGE_SHIFT] << PAGE_SHIFT;
+    if (ctxt[cpu].flags & VGCF_VMX_GUEST)
+        page = page_array[page >> PAGE_SHIFT] << PAGE_SHIFT;
     if (page != page_phys[cpu] || perm != prev_perm[cpu]) 
     {
        page_phys[cpu] = page;